//
//  NavigationController.swift
//  WeiBo
//
//  Created by Wishing.Star on 2017/1/11.
//  Copyright © 2017年 Wishing.Star. All rights reserved.
//

import UIKit
//主控制器，页面左右滑动切换功能
class NavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        //避免子控制器界面切回到根控制器界面时出现的融合现象，需要将默认navigationBar隐藏，并在基类中自定义一个navBar显示和使用
        navigationBar.isHidden = true
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    /// 重写push方法，使载入childViewController的数量超过0的子页面时，隐藏底部按钮
    ///
    /// - Parameters:
    ///   - viewController: UIViewController
    ///   - animated: true
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        
        //如果子控制器栈中的栈底控制器是rootVC根控制器（这是必然的），则当前子控制器需要隐藏底部按钮
        //即将根控制器入栈到子控制器栈的底部（根控制器生成时，其对应的子控制器栈中，就已经将其入栈），当前viewController不显示底部按钮
        if childViewControllers.count > 0 {
            
            viewController.hidesBottomBarWhenPushed = true
            
            
            //必须拿到BaseViewController类型的viewController，才能使用navItem，否则只能使用默认的导航栏元素
            if let vc = viewController as? BaseViewController {
                //申明有2种选项的属性
                var title = "返回"
                
                //当前viewController的navItem.leftBarButtonItem显示栈底的子控制器（即根控制器）的名称
                if childViewControllers.count == 1 {
                    //修改属性
                    title = childViewControllers.first?.title ?? "返回"
                }
                
                //设置自定义控制栏的导航返回按钮相关属性
                vc.navItem.leftBarButtonItem = UIBarButtonItem(title: title, target: self, action: #selector(popToBack),isBack: true)

            }
        }
        //重写父类的方法，将animated默认设置为true
        super.pushViewController(viewController, animated: true)
    }
    
    func popToBack() {
        popViewController(animated: true)
    }



}
